package com.bang.daybreak.common.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * * @Target:注解的作用目标
 *
 * @Target(ElementType.TYPE)   //接口、类、枚举
 * 　　　　　　　　@Target(ElementType.FIELD) //字段、枚举的常量
 * <p>
 * 　　　　　　　　@Target(ElementType.METHOD) //方法
 * <p>
 * 　　　　　　　　@Target(ElementType.PARAMETER) //方法参数
 * <p>
 * 　　　　　　　　@Target(ElementType.CONSTRUCTOR)  //构造函数
 * <p>
 * 　　　　　　　　@Target(ElementType.LOCAL_VARIABLE)//局部变量
 * <p>
 * 　　　　　　　　@Target(ElementType.ANNOTATION_TYPE)//注解
 * <p>
 * 　　　　　　　　@Target(ElementType.PACKAGE) ///包   
 */

/**
 * <p>
 * 用来给敏感字段进行脱敏注解。
 * <p>
 *
 * @version 1.0
 * @author : wdj
 * @since : 2019/7/28 0028 上午 9:48
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Desensitized {

    /**
     * 脱敏字符串前置非敏感的长度
     * @return
     */
    int prefixNonSensitiveLen() default 0;
    /**
     * 脱敏字符串后后置非敏感的长度
     * @return
     */
    int suffixNonSensitiveLen() default 0;

    /**
     * 脱敏字符串按照字符配置脱敏
     *
     * @return
     */
    String character() default "";
    /**
     * 脱敏字符串脱敏规则
     * @return
     */
    String rule() default "*";
}
